<?php
defined('INTERFACES_PATH') or define('INTERFACES_PATH',dirname(__FILE__).DIRECTORY_SEPARATOR);

require_once INTERFACES_PATH . 'MInterfacebonding.php';
require_once INTERFACES_PATH . 'MInterfacebridge.php';
require_once INTERFACES_PATH . 'MInterfaceeoip.php';
require_once INTERFACES_PATH . 'MInterfaceethernet.php';
require_once INTERFACES_PATH . 'MInterfaceipip.php';
require_once INTERFACES_PATH . 'MInterfacel2tpclient.php';
require_once INTERFACES_PATH . 'MInterfacel2tpserver.php';
require_once INTERFACES_PATH . 'MInterfacepppclient.php';
require_once INTERFACES_PATH . 'MInterfacepppoeclient.php';
require_once INTERFACES_PATH . 'MInterfacepppoeserver.php';
require_once INTERFACES_PATH . 'MInterfacepppserver.php';
require_once INTERFACES_PATH . 'MInterfacepptpclient.php';
require_once INTERFACES_PATH . 'MInterfacepptpserver.php';
require_once INTERFACES_PATH . 'MInterfacevlan.php';
require_once INTERFACES_PATH . 'MInterfacevrrp.php';

/**
 * Description of Mapi Interfaces
 *
 * @author      Krisna Pranata krisna.pranata@gmail.com <http://vthink.web.id>
 * @author      Lalu Erfandi Maula Yusnu nunenuh@gmail.com <http://vthink.web.id>
 * @copyright   Copyright (c) 2011, Virtual Think Team.
 * @license     http://opensource.org/licenses/gpl-license.php GNU Public License
 * @category	Libraries
 */
class MInterfaces {
    /**
     *
     * @var type array
     */
    
    private $talker;
    
    function __construct(Talker $talker) {
        $this->talker = $talker;
    }

    
     /**
     * This method is used to call class Mapi_Interface_Ethetrnet
     * @return Mapi_Ip 
     */
    public function ethernet(){
        return new MInterfaceethernet($this->talker);
    }
    
    /**
     * This method is used to call class Mapi_Interface_Pppoe_Client
     * @return Mapi_Ip 
     */
    public function pppoe_client(){
        return new MInterfacepppoeclient($this->talker);
    }
    
    /**
     * This method is used to call class Mapi_Interface_Pppoe_Server
     * @return Mapi_Ip 
     */
    public function pppoe_server(){
        return new MInterfacepppoeserver($this->talker);
    }
    
    /**
     * This method is used to call class Mapi_Interface_Eoip
     * @return Mapi_Ip 
     */
    public function eoip(){
        return new MInterfaceeoip($this->talker);
        
    }
    
    /**
     * This method is used to call class Mapi_Interface_Ipip
     * @return Mapi_Ip 
     */
    public function ipip(){
        return new MInterfaceipip($this->talker);
    }
    
    /**
     * This method is used to call class Mapi_Interface_Vlan
     * @return Mapi_Ip 
     */
    public function vlan(){
        return new MInterfacevlan($this->talker);
    }
    
    /**
     * This method is used to call class Mapi_Interface_Vrrp
     * @return Mapi_Ip 
     */
    public function vrrp(){
        return new MInterfacevrrp($this->talker);
    }
    
    /**
     * This method is used to call class Mapi_Interface_Bonding
     * @return Mapi_Ip 
     */
    public function bonding(){
        return new MInterfacebonding($this->talker);
    }
    
    /**
     * This method for used call class Mapi_Interface_Bridge
     * @return Mapi_Ip
     */
    public function bridge(){
        return new MInterfacebridge($this->talker);
    }
    
    /**
     * This method used call class Mapi_Interface_L2tp_Client 
     * @return Mapi_Ip
     */
    public function l2tp_client(){
        return new MInterfacel2tpclient($this->talker);
    }
    
    /**
     * This method used call class Mapi_Interface_L2tp_Server 
     * @return Mapi_Ip
     */
    public function l2tp_server(){
        return new MInterfacel2tpserver($this->talker);
    }
    
    /**
     * This method used call class Mapi_Interface_Ppp_Client 
     * @return Mapi_Ip
     */
    public function ppp_client(){
        return new MInterfacepppclient($this->talker);
    }
    
    /**
     * This method used call class Mapi_Interface_Ppp_Server 
     * @return Mapi_Ip
     */
    public function ppp_server(){
        return new MInterfacepppserver($this->talker);
    }
    
    /**
     * This method used call class Mapi_Interface_Pptp_Client 
     * @return Mapi_Ip
     */
    public function pptp_client(){
        return new MInterfacepptpclient($this->talker);
    }
    
    /**
     * This method used call class Mapi_Interface_Pptp_Server 
     * @return Mapi_Ip
     */
    public function pptp_server(){
        return new MInterfacepptpserver($this->talker);
    }
    
}

